package com.taobao.top.api;

import java.util.TreeMap;

import com.taobao.top.api.exception.ApiException;
import com.taobao.top.beans.AppConstants;
import com.taobao.top.utils.APIUtil;

/**
 * 类目API
 * <p>提供了标准类目，类目属性和类目属性值的查询功能 
 * @see http://open.taobao.com/doc/api_cat_detail.htm?category_id=102&cat_id=3
 * @author Song Shi Chao
 *
 */
public class Leimu_API {
	/**
	 * 查询B商家被授权品牌列表和类目列表 
	 * @param format
	 * @param mFields 
	 * @return
	 * @throws Exception
	 */
	public String getAuthorizeItemcats(String format,
			String mFields, String nick) throws ApiException {
		TreeMap<String, String> apiparamsMap = new TreeMap<String, String>(); 
		/* 添加除方法名和签名之外的系统级参数 */
		apiparamsMap.putAll(APIUtil.getSystemParams());
		/* 用户需要自定义返回的格式，默认为XML */
		if(format != null || !format.equals("")){
			apiparamsMap.put("format", format);
		}
		/* API方法名 */
		apiparamsMap.put("method", "taobao.itemcats.authorize.get");  
		/* 需要获取的字段 */
		apiparamsMap.put("fields", mFields);   
		 
		// 生成签名
		String sign = APIUtil.md5Signature(apiparamsMap, AppConstants.SECRET);
		apiparamsMap.put("sign", sign);
		
		String paramsString = APIUtil.getContent(apiparamsMap);
		String responseData = APIUtil.getResult(AppConstants.APIURL,
				paramsString);

		return responseData;
	}
 
	/**
	 * 获取后台供卖家发布商品的标准商品类目 
	 * @param format
	 * @param fields
	 * @param aParent_cid
	 * @param aCids
	 * @return
	 * @throws ApiException
	 */
	public String getItemcats(String format, String fields, String aParent_cid, String aCids) throws ApiException {
		TreeMap<String, String> apiparamsMap = new TreeMap<String, String>(); 
		/* 添加除方法名和签名之外的系统级参数 */
		apiparamsMap.putAll(APIUtil.getSystemParams());
		/* 用户需要自定义返回的格式，默认为XML */
		if(format != null || !format.equals("")){
			apiparamsMap.put("format", format);
		}
		/* API方法名 */
		apiparamsMap.put("method", "taobao.itemcats.get");  
		/* 需要获取的字段 */
		if(fields != null || !fields.equals("")){
			apiparamsMap.put("fields", fields);   
		}
		apiparamsMap.put("parent_cid", aParent_cid);   
		apiparamsMap.put("cids", aCids);  
		
		// 生成签名
		String sign = APIUtil.md5Signature(apiparamsMap, AppConstants.SECRET);
		apiparamsMap.put("sign", sign);
		
		String paramsString = APIUtil.getContent(apiparamsMap);
		String responseData = APIUtil.getResult(AppConstants.APIURL,
				paramsString);

		return responseData;
	}
	
	/**
	 * 获取标准商品类目属性 
	 * @param format
	 * @param fields
	 * @param mCid
	 * @param pid
	 * @param parent_pid
	 * @param is_key_prop
	 * @param is_sale_prop
	 * @param is_color_prop
	 * @param is_enum_prop
	 * @param is_input_prop
	 * @param is_item_prop
	 * @param child_path
	 * @return
	 * @throws ApiException
	 */
	public String getItemProps(String format, String fields, String mCid, String pid, String parent_pid, String is_key_prop, String is_sale_prop, String is_color_prop, String is_enum_prop, String is_input_prop, String is_item_prop, String child_path) throws ApiException {
		TreeMap<String, String> apiparamsMap = new TreeMap<String, String>(); 
		/* 添加除方法名和签名之外的系统级参数 */
		apiparamsMap.putAll(APIUtil.getSystemParams());
		/* 用户需要自定义返回的格式，默认为XML */
		if(format != null || !format.equals("")){
			apiparamsMap.put("format", format);
		}
		/* API方法名 */
		apiparamsMap.put("method", "taobao.itemprops.get");  
		/* 需要获取的字段 */
		if(fields != null || !fields.equals("")){
			apiparamsMap.put("fields", fields);   
		}
		 
		apiparamsMap.put("mCid", mCid);   
		 
		if(pid != null || !pid.equals("")){
			apiparamsMap.put("pid", pid);   
		}
		if(parent_pid != null || !parent_pid.equals("")){
			apiparamsMap.put("parent_pid", parent_pid);   
		}
		if(is_key_prop != null || !is_key_prop.equals("")){
			apiparamsMap.put("is_key_prop", is_key_prop);   
		}
		if(is_sale_prop != null || !is_sale_prop.equals("")){
			apiparamsMap.put("is_sale_prop", is_sale_prop);   
		}
		if(is_color_prop != null || !is_color_prop.equals("")){
			apiparamsMap.put("is_color_prop", is_color_prop);   
		}
		if(is_enum_prop != null || !is_enum_prop.equals("")){
			apiparamsMap.put("is_enum_prop", is_enum_prop);   
		}
		if(is_input_prop != null || !is_input_prop.equals("")){
			apiparamsMap.put("is_input_prop", is_input_prop);   
		}
		if(is_item_prop != null || !is_item_prop.equals("")){
			apiparamsMap.put("is_item_prop", is_item_prop);   
		}
		if(child_path != null || !child_path.equals("")){
			apiparamsMap.put("child_path", child_path);   
		}
		 
		// 生成签名
		String sign = APIUtil.md5Signature(apiparamsMap, AppConstants.SECRET);
		apiparamsMap.put("sign", sign);
		
		String paramsString = APIUtil.getContent(apiparamsMap);
		String responseData = APIUtil.getResult(AppConstants.APIURL,
				paramsString);

		return responseData;
	}
	
	/**
	 * 获取标准类目属性值
	 * @param format
	 * @param mFields
	 * @param mCid
	 * @param aPvs
	 * @return
	 * @throws ApiException
	 */
	public String getItemPropValues(String format,
			String mFields, String mCid, String aPvs) throws ApiException {
		TreeMap<String, String> apiparamsMap = new TreeMap<String, String>(); 
		/* 添加除方法名和签名之外的系统级参数 */
		apiparamsMap.putAll(APIUtil.getSystemParams());
		/* 用户需要自定义返回的格式，默认为XML */
		if(format != null || !format.equals("")){
			apiparamsMap.put("format", format);
		}
		/* API方法名 */
		apiparamsMap.put("method", "taobao.itempropvalues.get");  
		/* 需要获取的字段 */
		apiparamsMap.put("fields", mFields);   
		apiparamsMap.put("mCid", mCid); 
		if(aPvs != null || !aPvs.equals("")){
			apiparamsMap.put("aPvs", aPvs);
		}
		   
		// 生成签名
		String sign = APIUtil.md5Signature(apiparamsMap, AppConstants.SECRET);
		apiparamsMap.put("sign", sign);
		
		String paramsString = APIUtil.getContent(apiparamsMap);
		String responseData = APIUtil.getResult(AppConstants.APIURL,
				paramsString);

		return responseData;
	}
 
}
